<

パフォーマンスについてのさらなる考察

パフォーマンスとは何ですか?

パフォーマンスは、パフォーマーの定量化可能な一連の特性です。

この文脈では、パフォーマンスとはアクションの実行そのものではありません。 何かまたは誰かがどれだけうまく機能するかということです。したがって、形容詞を使用しますパフォーマンスの高い

一方、いかに良く部分は一般に自然言語で記述できますが、 私たちの限られた範囲の中で、現実のものとして定量化できるものに焦点を当てます。 番号。実数には、特殊な場合として整数と 0/1 のバイナリが含まれます。 自然言語による記述は依然として非常に重要です。たとえば、ニュース Flutterのパフォーマンスを言葉だけで激しく批判する記事 数値(定量化可能な値)がなくても意味がある可能性があり、 大きな影響を与える可能性があります。限られた範囲が選択されるのは、次の理由だけです。私たちの 限られたリソース。

パフォーマンスを説明するために必要な量は、多くの場合、 メトリック。

無数のパフォーマンスの問題と指標をナビゲートするには、次のように分類できます。 出演者に基づいて。

たとえば、この Web サイトのコンテンツのほとんどは Flutter アプリに関するものです。 パフォーマンス。実行者は Flutter アプリです。インフラパフォーマンスも これは Flutter にとって重要であり、実行者はビルド ボットと CI タスク ランナーです。 これらは、改善のために Flutter がコード変更を組み込む速度に大きく影響します。 アプリのパフォーマンス。

ここでは、範囲を意図的に拡大して、その他のパフォーマンスの問題も含めます。 アプリのパフォーマンスの問題だけでなく、問題に関係なく多くのツールを共有できるため、 出演者は誰ですか。たとえば、Flutter アプリのパフォーマンスとインフラストラクチャ パフォーマンスは、同じダッシュボードと同様のアラート メカニズムを共有する場合があります。

範囲を広げることで、従来の出演者も含めることが可能になります。 無視するのは簡単です。ドキュメントのパフォーマンスはその一例です。出演者 SDK の API ドキュメント、メトリクスは読者の割合です。 API ドキュメントが役に立つと思う人。

なぜパフォーマンスが重要なのでしょうか?

この質問に答えることは、プロジェクトの成果を検証するために重要であるだけではありません。 パフォーマンスだけでなく、よりパフォーマンスを向上させるためのパフォーマンス作業の指導にも使用されます。 使える。 「なぜパフォーマンスが重要なのか?」に対する答え多くの場合、それも答えです 「パフォーマンスはどのように役立ちますか?」

簡単に言えば、パフォーマンスは重要かつ有用です。その理由は、次のような理由からです。 パフォーマンスには定量化可能なプロパティまたは指標が必要です。これは次のことを意味します:

  1. パフォーマンス レポートは簡単に利用できます。
  2. パフォーマンスにはほとんど曖昧さはありません。
  3. パフォーマンスは同等であり、変換可能です。
  4. パフォーマンスは公平です。

非パフォーマンス、または測定不可能な問題や説明がそうではないというわけではありません。 重要。パフォーマンスが向上するシナリオを強調することを目的としています。 より有用。

1. パフォーマンス レポートは簡単に利用できます

パフォーマンスの指標は数値です。数字を読むことは数字を読むことよりはるかに簡単です 通路。たとえば、エンジニアが パフォーマンス評価を 1 ~ 5 の数字で表します。おそらく同じエンジニアが必要です。 500 ワードのフィードバックの概要全文を読むには、少なくとも 1 分かかります。

数値が多い場合は、簡単に要約したり視覚化したりすることができます。 消費。たとえば、次のようにして数百万の番号をすぐに消費できます。 ヒストグラム、平均、分位数などを確認します。メトリクスに 数千のデータ ポイントの履歴を確認すると、タイムラインを簡単にプロットできます。 その傾向を読み取ってください。

一方、n500 ワードのテキストがあれば、ほぼ確実にn-それらのテキストを消費するための時間コスト。分析するのは大変な作業だろう 何千もの歴史的記述があり、それぞれが 500 語で構成されています。

2. パフォーマンスに曖昧さはほとんどない

パフォーマンスを数値のセットとして持つことのもう 1 つの利点は、その曖昧さのなさです。 アニメーションに 1 フレームあたり 20 ミリ秒のパフォーマンスが必要な場合、または 50 fps という数字については、さまざまな解釈の余地がほとんどありません。の上 一方、同じアニメーションを言葉で説明すると、次のように呼ばれるかもしれません。 それは良いことですが、他の人はそれが悪いと文句を言うかもしれません。同様に、同じ 単語やフレーズは人によって解釈が異なる場合があります。もしかしたら、 OK フレーム レートを 60 と解釈しますfps、他の誰かがそれを解釈する可能性があります 30fpsになるようにします。

数値は依然としてノイズが多い場合があります。たとえば、フレームあたりの測定時間は次のようになります。 このフレームの実際の計算時間にランダムな時間 (ノイズ) を加えたものになります。 その CPU/GPU は無関係な作業に費やされます。したがって、メトリックは変動します。 それにもかかわらず、その数字が何を意味するかについてはあいまいさはありません。そして、 また、そのようなノイズを処理するための厳密な理論とテストツールも必要です。たとえば、あなたは ランダムな分布を推定するために複数の測定を行うことができます。 変数、または m の平均をとることもできますを排除するためのあらゆる測定 によるノイズ大数の法則。

3. パフォーマンスは同等であり、変換可能です

パフォーマンスの数値には明確な意味があるだけでなく、 明確な比較。たとえば、5 が 4 より大きいことは疑いの余地がありません。 一方で、優れているかどうかは主観的なものかもしれません。 素晴らしいよりも良いか悪いか。同様に、エピックが 伝説よりも良いですか?実は、この言葉は、期待を大きく上回るより良いかもしれない素晴らしいです誰かの解釈では。それはただなる 定義を大きく超えたマップは明確で比較可能 期待は4、素晴らしいは5。

数式や関数を使用して数値を簡単に変換することもできます。例えば、 60 fps は 1 フレームあたり 16.67 ミリ秒に変換できます。フレームのレンダリング 時間バツ(ms) はバイナリインジケーターに変換できますisSmooth = [x <= 16] = (x <= 16 ? 1 :0)。このような変換は複合化するか、 連鎖しているため、1 つでさまざまな量を得ることができます。 ノイズや曖昧さを加えずに測定できます。換算された数量は、 その後、さらなる比較と消費に使用されます。このような変換は、 自然言語を扱う場合はほぼ不可能です。

4. パフォーマンスは公正です

問題の発見が冗長な言葉に依存している場合、不当な利点は次のとおりです。 より饒舌な人(チャットや文章を書くことに積極的な人)、または次のような人に与えられます。 開発チームに近く、帯域幅が広く、帯域幅が低い人 チャットや対面での会議にかかる費用。

距離や方法に関係なく、同じメトリクスを使用して問題を検出することで、 ユーザーが沈黙しているので、私たちはすべての問題を公平に扱うことができます。それは今度は、 より大きな影響を与える適切な問題に集中できるようになります。

パフォーマンスをどう活用するか

ここで議論した4つのポイントを、少し異なる観点から要約すると、次のようになります。 視点:

  1. パフォーマンス指標を簡単に利用できるようにします。読者を圧倒しないでください たくさんの数字(または単語)。数字が多い場合は要約してみる それらをより小さな数値のセットにまとめます (たとえば、多くの数値を次のように要約します)。 単一の平均値)。数値が変化した場合にのみ読者に通知します 大幅に増加します(たとえば、スパイクまたはリグレッションの自動アラート)。

  2. パフォーマンス指標をできるだけ明確にします。単位を定義します。 番号を使用しています。数値の測定方法を正確に説明します。を作る 簡単に再現できる数値。ノイズが多い場合は、全体を表示するようにしてください 分散するか、多数を集約することでノイズを極力排除します。 ノイズの多い測定。

  3. 性能を比較しやすくします。たとえば、タイムラインを提供すると、 現在のバージョンと古いバージョンを比較します。 ~するための方法とツールを提供する あるメトリックを別のメトリックに変換します。たとえば、両方のメモリを変換できた場合 ユーザー数が増加し、fps が低下するか、収益が失われます。 そうすれば、それらを比較して、情報に基づいたトレードオフを行うことができます。

  4. パフォーマンス メトリクスでできるだけ広い範囲の母集団を監視するようにします。 だから誰も取り残されません。